C语言高手请指教:"int **p"是什么意思啊

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:51:57

int a;
int *p = &a;
int **pp = &p;

明白了吧?
p 是一个普通的指针,它指向普通变量
pp 是一个指向指针的指针。

int a;
int *p = &a;
int **p是一个二维指针,它指向一个指针。
而它指向的那个指针是指向一个整型变量的。

如果我们设:
int a; //a是一个整型变量,则:
int *q; //它要指向这个整型变量a,则:
q=&a; //你所问的int **p是指向指针q的,则:
p=&q;

明白了吗???

int *p=&a;即声明一个整型指针变量p,并给指针变量p赋初值为变量a的地址。即p中存放的是变量a的地址。

如果,*p=&a;这样话,是把变量a 的地址存到指针变量p所指向的内存单元中.
例如:
main()
{
int *p,**k,a,s,t;
a=5;
p=&a;/*指针变量p存放变量a的地址*/
s=*p;
k=&p;/*指针量变量k存放指针变量p的地址,指针变量k是指向指针的指针*/
t=**k;

printf("a=%d,s=%d,t=%d",a,s,t);
}
改为下面的程序结果一样都是a=5,s=5,t=5

main()
{
int a,s,t, *p=&a,**k=&p;
a=5;
s=*p;
t=**k;

printf("a=%d,s=%d,t=%d",a,s,t);
}

这样看很容易:
(*p)在int ()中间,表示(*p)是函数,这个函数未定参数表,返回值是int型的;
再看(*p),p前有*,表示p为指针,这个指针指向的对象是前面那个函数。

p的使用